package cn.xtcode.dao;

import cn.xtcode.domain.po.PayOrder;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author: xt-code
 * @date: 2025/8/6 09:58
 * @description:
 */
@Mapper
public interface IOrderDao {
    /**
     * 插入新的订单
     * @param payOrder
     */
    void insert(PayOrder payOrder);


    /**
     * 查询没有userID、productID相应的数据是否存在
     * @param payOrderReq
     * @return
     */
    PayOrder queryUnpayOrder(PayOrder payOrderReq);


    /**
     * 将订订单信息从CREATE ---> PAY_WAIT
     * @param payOrder
     */
    void updateOrderPayInfo(PayOrder payOrder);

    /**
     * 支付成功后，扫码订单，将订单状态从PAY_WAIT ---> PAY_SUCCESS
     */
    void changeOrderPaySuccess(PayOrder order);

    /**
     * 超时关单
     * @param orderId
     */
    boolean changeOrderClose(String orderId);


    /**
     * 搜索需要超时关单的订单ID
     * @return
     */
    List<String> queryTimeoutCloseOrderList();

    /**
     * 创建订单后，1分钟还处于PAY_WAIT状态
     */
    List<String> queryNoPayNotifyOrder();
}
